<?php

declare (strict_types = 1);

namespace app\api\model\user;

use app\api\service\User as UserService;
use app\common\enum\user\balanceLog\Scene;
use app\common\model\ProtocolDoc;
use app\common\model\store\Setting;
use app\common\model\User;
use app\common\model\user\BalanceLog as BalanceLogModel;

/**
 * 用户余额变动明细模型
 * Class BalanceLog
 * @package app\api\model\user
 */
class BalanceLog extends BalanceLogModel
{
    /**
     * 隐藏字段
     * @var array
     */
    protected $hidden = [
        'store_id',
    ];

    /**
     * 获取账单明细列表
     * @return \think\Paginator
     * @throws \app\common\exception\BaseException
     * @throws \think\db\exception\DbException
     */
    public function getList($params)
    {
        $limit = $params['limit'] ?? 15;
        // 当前用户ID
        $userId = UserService::getCurrentLoginUserId();
        // 获取列表数据
        return $this->where('user_id', '=', $userId)
            ->field('log_id,user_id,scene,money,created_at')
            ->order(['created_at' => 'desc'])
            ->paginate($limit)
            ->each(function (&$item){
                $item['scene'] = Scene::data()[$item['scene']]['name'];
            })
            ->toArray();
    }

    //获取余额详情
    public function getDetail(): array
    {
        // 当前用户ID
        $userId = UserService::getCurrentLoginUserId();
        $res = User::where('user_id',$userId)
            ->where('is_delete',0)
            ->field('user_id,nick_name,balance,freeze_balance,mobile,withdrawal_price')
            ->find();
        $res->freeze_balance = sprintf('%0.2f',0);  //平台没有使用冻结资金
        $res->allow_cash_balance = sprintf('%0.2f',$res->balance);
        $res->cash_out_rule = (new ProtocolDoc)->detail('cash_out_rule');

        return $res->toArray();
    }

}